/**
 * @Description:
 * @Author BPF
 * @create 2021/8/24 16:48
 */
/**
 * json解析
 * @param str
 * @returns {null|any}
 */
export const parseJSONNoError = str => {
  try {
    return JSON.parse(str)
  } catch (e) {
    return null
  }
}

/*产生随机唯一值*/
export const uniqueKey = () =>
  'x' + Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)

/**
 *  文件下载
 * @param url  链接地址
 * @param filename  文件名称
 */
export const download = (url, filename = '') => {
  const saveAs = (blob, filename) => {
    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob, filename)
    } else {
      const link = document.createElement('a')
      const body = document.querySelector('body')

      link.href = window.URL.createObjectURL(blob) // 创建对象url
      link.download = filename

      // fix Firefox
      link.style.display = 'none'
      body.appendChild(link)

      link.click()
      body.removeChild(link)

      window.URL.revokeObjectURL(link.href) // 通过调用 URL.createObjectURL() 创建的 URL 对象
    }
  }

  const getBlob = url => {
    return new Promise(resolve => {
      const xhr = new XMLHttpRequest()

      xhr.open('GET', url, true)
      xhr.responseType = 'blob'
      xhr.onload = () => {
        if (xhr.status === 200) {
          resolve(xhr.response)
        }
      }

      xhr.send()
    })
  }

  getBlob(url).then(blob => {
    saveAs(blob, filename)
  })
}
